perm filename CHAR.RLS[225,JMC] blob
sn#005369 filedate 1971-02-09 generic text, type T, neo UTF8
00100 OFF ECHO;
00200
00300 COMMENT Functions for computing the irreducible characters
00400 of the symmetric group.;
00500
00600 COMMENT preds(part,m,n) is the list of partitions of n
00700 that can be obtained from part (a partition of n) by deleting
00800 m dots from the shape in a regular way. See
00900 (Littlewood 1950) p. 69 for the definition of the regular
01000 application of m nodes to a graph. In these functions a
01100 partition is represented by a list of the summands
01200 in decreasing order. In pred(part,m,n), each member is
01300 preceded by P or N according to whether the
01400 application required is positive or negative. We have, for
01500 example
01600 pred((5 3 3 2 2 1 1 1),2,18) = ((P 3 3 3 2 2 1 1 1)
01700 (N 5 2 2 2 2 1 1 1) (N 5 3 3 1 1 1 1 1) (N 5 3 3 2 2 1)).
01800 preds has mera and predsa as auxiliary functions.;
01900
02000 PREDS(PART,M,N) ←
02100 IF N < M OR NULL PART THEN NIL
02200 ELSE APPEND(PREDSA(PART,M,N),
02300 MERA(CAR PART,PREDS(CDR PART,M,N - CAR PART)));
02400
02500 MERA(X,U) ←
02600 IF NULL U THEN NIL
02700 ELSE (CAAR U . (X . CDAR U)) . MERA(X,CDR U);
02800
02900 PREDSA(PART,M,N) ←
03000 IF N < M OR NULL PART THEN NIL
03100 ELSE IF NULL CDR PART THEN
03200 (IF CAR PART - M = 0 THEN LIST LIST 'P
03300 ELSE LIST LIST('P ,CAR PART - M))
03400 ELSE IF CAR PART - M > CADR PART - 1
03500 THEN LIST('P . ((CAR PART - M) . CDR PART))
03600 ELSE IF CAR PART - M = CADR PART - 1 THEN NIL
03700 ELSE (LAMBDA Z;
03800 IF NULL Z THEN NIL
03900 ELSE IF CAAR Z EQ 'P THEN
04000 (IF (CADR PART - 1) = 0 THEN '((N))
04100 ELSE LIST('N . ((CADR PART - 1) . CDAR Z)))
04200 ELSE (IF (CADR PART - 1) = 0 THEN '((P))
04300 ELSE LIST('P . ((CADR PART - 1) . CDAR Z))))
04400 PREDSA(CDR PART,
04500 M - CAR PART + CADR PART - 1,
04600 N - CAR PART);
04700
04800 COMMENT After this, the computation of the characters
04900 is almost trivial.;
05000
05100 CHI(PARTITION,CLASS) ←
05200 IF NULL PARTITION OR NULL CDR PARTITION THEN 1
05300 ELSE CHISUM(PREDS(PARTITION,CAR CLASS,SUMA CLASS),CDR CLASS);
05400
05500 CHISUM(U,CLASS) ←
05600 IF NULL U THEN 0
05700 ELSE (IF CAAR U EQ 'P THEN 1 ELSE -1)*CHI(CDAR U,CLASS)
05800 + CHISUM(CDR U,CLASS);
05900
06000 SUMA U ← IF NULL U THEN 0 ELSE CAR U + SUMA CDR U;